package com.dragon.refect.classload;

/**
 * 被动使用类字段演示三:
 * 常量在编译阶段会存入调用类的常量池中，本质上并没有直接引用到定义常量的类，因此不会触发定义常量的类的初始化
 *
 * @author dragon
 * @since 2019/11/13
 */
public class PassiveReferenceDemo3 {

    public static void main(String[] args) {
        /*
         * 在编译阶段通过常量的传播优化，已经将此常量的值'20'存储到了PassiveReferenceDemo3类的常量池中，
         * 实际上PassiveReferenceDemo3的class文件=之中并没有ConstClass类的符号引用，这两个类在编译成Class之后就不存在任何联系了。
         */
        System.out.println(ConstClass.NUM);
    }
}


class ConstClass {

    static {
        System.out.println("ConstClass Init!");
    }

    public static final int NUM = 20;
}

